﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//importamos
using System.Data.Entity; //para el DbContext
using CredisysTriunfadores.BusinessEntites.Acciones;
using CredisysTriunfadores.BusinessEntites.Ahorros;
using CredisysTriunfadores.BusinessEntites.Prestamos;
using CredisysTriunfadores.BusinessEntites.Recursos;
using CredisysTriunfadores.Repository.Mapping; //Para las entidades mapeadas

namespace CredisysTriunfadores.Repository
{
    public partial class TriunfadoresContext:DbContext
    {
        //conexiones que puedo tener
        static TriunfadoresContext()
        {
            //Database.SetInitializer<TriunfadoresContext>(null);
            //Database.SetInitializer<TriunfadoresContext>(new DropCreateDatabaseIfModelChanges<TriunfadoresContext>());
            //Database.SetInitializer<TriunfadoresContext>(new DropCreateDatabaseAlways<TriunfadoresContext>());
            Database.SetInitializer<TriunfadoresContext>(new CreateDatabaseIfNotExists<TriunfadoresContext>());
        }
        public TriunfadoresContext()
            : base("Name=TriunfadoresContext")
        {
            this.Configuration.ProxyCreationEnabled = false;
        }

        /*coleccion de todas las entidades del contexto
        entidades que se pueden consultar de la bade de datos, de un determinado tipo
        se crean a partir de un DbContext*/
        public DbSet<Accion> Acciones { get; set; }
        public DbSet<Ahorro> Ahorros { get; set; }
        public DbSet<Avalado> Avalados { get; set; }
        public DbSet<CuotaPago> CuotaPagos { get; set; }
        public DbSet<Prestamo> Prestamos { get; set; }
        public DbSet<Socio> Socios { get; set; }
        public DbSet<TasaInteres> TasaIntereses { get; set; }

        /*Clase de CLR se asigna a un esquema de la base de datos.
         Este enfoque basado en codigo para crear un modelo de Entity Data Model(EDM)
         se conoce como code First*/
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new AccionMap());
            modelBuilder.Configurations.Add(new AhorroMap());
            modelBuilder.Configurations.Add(new AvaladoMap());
            modelBuilder.Configurations.Add(new CuotaPagoMap());
            modelBuilder.Configurations.Add(new PrestamoMap());
            modelBuilder.Configurations.Add(new SocioMap());
            modelBuilder.Configurations.Add(new TasaInteresMap());
        }

    }
}
